/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package mx.edu.itesm.daai.controladores;
import	javax.servlet.*;
import	javax.servlet.http.*;
import	java.io.*;						// para empacar y enviar resultados

import mx.edu.itesm.daai.dao.DAO;
import mx.edu.itesm.daai.dao.dto.UserDTO;


/**
 *
 * @author Karina
 */
public class CCMVirtual extends HttpServlet {
    private static final long 	serialVersionUID = 19020422L;

public void doGet(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

		// solo rutea...
		doPost(request, response);

	} // fin doGet
public void doPost(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

		// extrae la accion a realizar
		String actions = request.getParameter("accion");
		// STUB!!!
		System.out.println("Controlador> Accion="+actions);

		if ("login".equals(actions)) {
			// haz un forward al reporte1
			doAutentifica(request, response);
		} else if ("insert".equals(actions)) {
			// haz un forward al reporte1
			showInsert(request, response);
		}else if ("doinsert".equals(actions)) {
			// haz un forward al reporte1
			doInsert(request, response);
		} else if ("logout".equals(actions)) {
			// haz un forward al reporte1
			doLogout(request, response);
		}else {
			// notifica que la accion no ha sido implantada
			response.sendError(HttpServletResponse.SC_NOT_IMPLEMENTED);
		} // fin if-then-else

	} // fin doPost

	/**
	  * <p>
	  *	Este m&eacute;todo se encarga de procesar un reporte
	  * codificando la solicitud y enviando el control a una
	  * vista (JSP) que se encargue de mostrar el contenido
	  * del reporte en el cliente
	  * </p>
	  *
	  */
	public void doAutentifica(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

            // la sesion actual...
            HttpSession sesion = request.getSession(true);

            String urlDestino; 
            // lo que podemos extraer de la sesion...
            
            //		  interfaces de request
            //	String	urlOrigen = HttpUtils.getRequestURL(request).toString();
            String urlOrigen = request.getRequestURI();
            String queryOrigen = request.getQueryString();

            DAO udao =  new DAO();
            // extrae la firma del usuario
            String login = request.getParameter("usr");
            String password = request.getParameter("pwd");
            
            UserDTO udto = new UserDTO();
        
            udto = udao.authenticateUser(login, password);
             
            
          if (udto.getNombreUsuario() == null) {
                // no te conozco, adios!!!
                // por supuesto, no habra modelo
                urlDestino = "/jspx/denied.jspx";
            } else {
                // bienvenida al sistema!!!
             
                urlDestino = "/jspx/accepted.jspx";

                // ahora registra todo lo necesario en la sesion
                // la identificacion del usuario
                sesion.setAttribute("user", udto);
           } // fin if-then
            
            System.out.println("Re-direccionando a:" + urlDestino);

            RequestDispatcher rd = request.getRequestDispatcher(urlDestino);
            rd.forward(request, response);

	} // fin doAutentifica

        public void showInsert(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

            // la sesion actual...
            HttpSession sesion = request.getSession(true);

            String urlDestino; 
            // lo que podemos extraer de la sesion...
            
            //		  interfaces de request
            //	String	urlOrigen = HttpUtils.getRequestURL(request).toString();
            String urlOrigen = request.getRequestURI();
            String queryOrigen = request.getQueryString();
           
            urlDestino = "/jspx/registro.jspx";
            
            // fin if-then
            System.out.println("Re-direccionando a:" + urlDestino);

            RequestDispatcher rd = request.getRequestDispatcher(urlDestino);
            rd.forward(request, response);
       

	} // fin doAutentifica
        
        public void doInsert(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

            // la sesion actual...
            HttpSession sesion = request.getSession(true);

            String urlDestino; 
            // lo que podemos extraer de la sesion...
            
            //		  interfaces de request
            //	String	urlOrigen = HttpUtils.getRequestURL(request).toString();
            String urlOrigen = request.getRequestURI();
            String queryOrigen = request.getQueryString();

            // STUB!!!
            System.out.println("url origen= " + urlOrigen);
            System.out.println("query origen= " + queryOrigen);

            
            DAO udao = new DAO();
            // extrae la firma del usuario
            String name = request.getParameter("name");
            String last = request.getParameter("last");
            String login = request.getParameter("usr");
            String password = request.getParameter("pwd");
            
            UserDTO udto = new UserDTO();
            udto.setNombreUsuario(name);
            udto.setApellidoUsuario(last);
            udto.setUsuario(login);
            udto.setContrasenia(password);
            
            
            udao.insertUser(udto);
               
            
             urlDestino = "/jspx/index.jspx";

            // fin if-then
            System.out.println("Re-direccionando a:" + urlDestino);

            RequestDispatcher rd = request.getRequestDispatcher(urlDestino);
            rd.forward(request, response);
       

	} // fin doAutentifica

        public void doLogout(
			HttpServletRequest request,
			HttpServletResponse response)
			throws IOException, ServletException {

            // la sesion actual...
            HttpSession sesion = request.getSession(true);
            
            sesion.invalidate();

            String urlDestino; 
            // lo que podemos extraer de la sesion...
            
            //		  interfaces de request
            //	String	urlOrigen = HttpUtils.getRequestURL(request).toString();
            String urlOrigen = request.getRequestURI();
            String queryOrigen = request.getQueryString();

            // STUB!!!
            System.out.println("url origen= " + urlOrigen);
            System.out.println("query origen= " + queryOrigen);

           
            urlDestino = "/jspx/index.jspx";
            
            // fin if-then
            System.out.println("Re-direccionando a:" + urlDestino);

            RequestDispatcher rd = request.getRequestDispatcher(urlDestino);
            rd.forward(request, response);
       

	}

}
